﻿using System;
using System.Collections.Generic;
using Sustainalytics.Entities;
using Sustainalytics.Utils;

namespace Sustainalytics.Accounts.BusinessLogic
{
    public interface IAccountsManagement
    {
        List<Account> GetAccounts(Status? status, string searchText, ListOptions listOptions, bool tier1_or_tier2 = false);

        int GetAccountsTotalCount(Status? status, string searchText, bool tier1_or_tier2 = false);

        Account GetAccountById(Guid id);

        List<User> GetUsers(List<Guid> accountIds, Status? status, string searchText, ListOptions listOptions);
        int GetUsersTotalCount(List<Guid> accountIds, Status? status, string searchText);
        User GetUserByUserId(Guid userId);
        ClientUser GetClientUserByUserId(Guid userId);

        List<Account> GetAccountsByUserSatusAndSearchFilter(Status? userStatus, string filterText);

        DateTime? GetLastSyncDate(SyncType type);
    }
}
